

#ifndef UDBFCF_H
#define UDBFCF_H

#include "zdbmain.h"

#pragma pack(push, 8)

class UcDbFcf: public  UcDbEntity
{
public:
    UCDB_DECLARE_MEMBERS(UcDbFcf);
                              UcDbFcf();
                              UcDbFcf(const ZTCHAR *, const UcGePoint3d&,
                              const UcGeVector3d&, const UcGeVector3d&);
    virtual ~UcDbFcf();

    virtual Ucad::ErrorStatus getGripPoints   (UcGePoint3dArray&,
                                               UcDbIntArray&,
                                               UcDbIntArray&) const;
    virtual Ucad::ErrorStatus moveGripPointsAt(const UcDbIntArray&,
	                                           const UcGeVector3d&);
    virtual void              list            () const;

    enum whichLine {kAll = -1};
    virtual void              setText          (const ZTCHAR *);
    virtual ZTCHAR *           text             (const int lineNo = kAll) const;
    virtual void              setLocation      (const UcGePoint3d&);
    virtual UcGePoint3d       location         () const;
    virtual void              setOrientation   (const UcGeVector3d& norm,
                                                const UcGeVector3d& dir);
    virtual UcGeVector3d normal()    const;
    virtual UcGeVector3d direction() const;
    
    virtual void getBoundingPoints(UcGePoint3dArray&) const;
    virtual void getBoundingPline(UcGePoint3dArray&)  const;
    
    virtual void              setDimensionStyle(UcDbHardPointerId);
    virtual UcDbHardPointerId dimensionStyle() const;
    
    Ucad::ErrorStatus   getDimstyleData(UcDbDimStyleTableRecord*& pRecord) const;
    Ucad::ErrorStatus   setDimstyleData(UcDbDimStyleTableRecord* pNewData);
    Ucad::ErrorStatus   setDimstyleData(UcDbObjectId newDataId);

    virtual void        setDimVars();

    UcCmColor      dimclrd () const;
    UcCmColor      dimclrt () const;
    double         dimgap  () const;
    double         dimscale() const;
    UcDbObjectId   dimtxsty() const;
    double         dimtxt  () const;

    Ucad::ErrorStatus setDimclrd (UcCmColor&     val);
    Ucad::ErrorStatus setDimclrt (UcCmColor&     val);
    Ucad::ErrorStatus setDimgap  (double         val);
    Ucad::ErrorStatus setDimscale(double         val);
    Ucad::ErrorStatus setDimtxsty(UcDbObjectId   val);
    Ucad::ErrorStatus setDimtxt  (double         val);

    virtual Ucad::ErrorStatus   getClassID(CLSID* pClsid) const;

    virtual bool castShadows() const;
    virtual void setCastShadows(bool newVal);
    virtual bool receiveShadows() const;
    virtual void setReceiveShadows(bool newVal);
};

#pragma pack(pop)

#endif
